package com.mycat.io.bio;

import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;

/**
 * BIO 客户端。
 * 同步阻塞IO。
 * 数据面向-流。
 * accept(),read()都是阻塞方法。如果服务端不采用多线程编程，服务端则只能连接一个客户端。
 * 采用多线程编程，每一个客户端需要创建一个线程，当客户端呈线性增长时，服务端点线程数量也呈线性增长，服务端线程数量与客户端数量为1:1。
 * 当客户端数量太多会导致服务器卡死、宕机。
 * @author roger.
 * @email 190642964@qq.com
 * @create 2017-02-17
 */
public class BIOClient {

    public static void main(String[] args) {
        try {
            Socket client = new Socket("localhost", 8888);

            OutputStream output = client.getOutputStream();

            Scanner scanner = new Scanner(System.in);
            while (scanner.hasNextLine()) {
                String msg = scanner.nextLine();
                output.write(msg.getBytes());
            }
            output.close();
            client.close();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
